Refactor qannotate to support multi-mode execution with per-mode database assignment#399
Refactor qannotate to support multi-mode execution with per-mode database assignment#399
Conversation
Co-authored-by: holmeso <7066552+holmeso@users.noreply.github.com>
|
@copilot will the order of modes that is provided by the user be maintained when running them? |
Yes — mode order is maintained. |
|
@copilot each mode will potentially have its own -d database file that will be required. Not all modes need this |
Co-authored-by: holmeso <7066552+holmeso@users.noreply.github.com>
Updated in 52dc3ad: multi-mode execution now extracts all |
Description
qannotate previously enforced a single
-modeper run, requiring repeated load/annotate/write cycles for multi-step annotation workflows. This change allows multiple modes to be specified and executed sequentially in one CLI invocation while preserving existing single-mode behavior.CLI parsing: multi-mode support
Optionscaptures all provided--modevalues (getModes()), while retaininggetMode()(first mode) for compatibility.-d,--config,--summaryFile,--test/--control) is enabled when any selected mode requires it.Execution flow: chained per-mode runs
Mainnow branches onoptions.getModes():vcf2maf/vcf2maftmpin mixed pipelines.Per-mode database assignment in multi-mode runs
-d/--databasearguments once and assigns them in order to only the modes that require a database.-d.-d value,-d=value, and--database=valueforms when collecting database arguments.Focused tests
OptionsTest.multipleModes()to verify ordered multi-mode parsing and backward-compatible primary mode behavior.MainTestcoverage for:Type of change
Please delete options that are not relevant.
How Has This Been Tested?
Targeted qannotate unit tests were run for multi-mode parsing, per-mode argument rewriting, and database argument handling.
au.edu.qimr.qannotate.OptionsTestau.edu.qimr.qannotate.MainTestAre WDL Updates Required?
No WDL updates required; change is isolated to qannotate CLI option parsing/execution flow.
Checklist:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.